/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author cooler
 */
import java.net.*; // Para Socket

import java.io.*; // Para IOException e Input/OutputStream
import java.util.Vector;
import arrayManipulation.*;
import comunicacao.Comunicacao;

public class NivelInf {

    private static final int VECSIZE = 125; //Tamanho do vetor a ser criado        

    public static void main(String[] args) throws IOException {

        if ((args.length < 1) || (args.length > 2)) {
            throw new IllegalArgumentException("Parametros(s): <Servidor> [<Porta>]");
        }

        String server = args[0];

        int servPort = (args.length == 2) ? Integer.parseInt(args[1]) : 7;

        // Cria o socket que sera utilizado para se conectar ao servidor na porta especificada
        Socket outSock = new Socket(server, servPort);

        System.out.println("Conectado ao servidor... enviando a mensagem");

        int randomVector[] = new int[VECSIZE];

        Qsort.generateRandom(randomVector);
        
        System.out.println("Vetor gerado: ");
        for (int i = 0; i < randomVector.length; i++) {
            System.out.println(randomVector[i]);
        }
        
        Comunicacao.envia(outSock, randomVector);
        
        outSock.close();
        
        // Cria um server socket para aceitar conexoes do cliente
        ServerSocket inSock = new ServerSocket(servPort);
        System.out.println("Servidor pronto para aceitar conexoes...");
        
        
        int[] array1 = Comunicacao.recebe(inSock, 125);
        
        System.out.println("Mensagem recebida: ");
        
        for (int i = 0; i < array1.length; i++) {
            System.out.println(array1[i]);
        }

        inSock.close();

    }
}
